<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <meta name="renderer" content="webkit">
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
    <meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=0">
</head>
<body>
    <script >
      /*
      Set
      它类似于数组，但成员的值都是唯一的，集合实现了iterator接口，
      所以可以使用 扩展运算符 和 for..of 进行遍历
      集合的属性和方法

      - size 返回集合的元素个数
      - add 增加一个新元素，返回当前集合
      - delete 删除元素，返回boolean值
      - has 检测集合中是否包含某个元素，返回boolean 值
      
      **/
    
      let s = new Set();
      let s1 = new Set(['pop','pipi','pop']);
      console.log(typeof s);
      // 去重
      s1.add('sd');
      s1.delete('sd');

      s1.has('pop');

      for(let v of s1){
          console.log(v);
      }

      // 练习

      let arr = [1,2,3,4,5,6,6,1,2,3]

      // 去重
      let result = [...new Set(arr)];
      // 交集
      let arr2 = [3,5,6];
      let result2 = [...new Set(arr2)].filter(value=>new Set(arr2).has(value))
      // 并集
      let result3 = [...new Set([...arr2,...arr])];
      // 差集,要注意谁和谁求差集
      let result4 = [...new Set(arr2)].filter(value=>!new Set(arr2).has(value))
     
   </script>
</body>

</html>